package ar.edu.utn.frgp.banco.servlets;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import ar.edu.utn.frgp.banco.domain.Cliente;
import ar.edu.utn.frgp.banco.domain.Cuenta;
import ar.edu.utn.frgp.banco.domain.Movimientos;
import ar.edu.utn.frgp.banco.domain.PagoPrestamo;
import ar.edu.utn.frgp.banco.domain.Prestamo;
import ar.edu.utn.frgp.banco.service.RecursoServiceCuenta;
import ar.edu.utn.frgp.banco.service.RecursoServiceMovimientos;
import ar.edu.utn.frgp.banco.service.RecursoServicePagoPrestamos;
import ar.edu.utn.frgp.banco.service.RecursoServicePrestamos;
import ar.edu.utn.frgp.banco.service.impl.RecursoServiceCuentaImpl;
import ar.edu.utn.frgp.banco.service.impl.RecursoServiceMovimientosImpl;
import ar.edu.utn.frgp.banco.service.impl.RecursoServicePagoPrestamosImpl;
import ar.edu.utn.frgp.banco.service.impl.RecursoServicePrestamosImpl;
import ar.edu.utn.frgp.banco.servlets.scope.MessageBean;

public class Prestamo7PagarCuotaServlet extends GenericServlet {
	private static final long serialVersionUID = 1L;

    /**
     * Default constructor. 
     */
    public Prestamo7PagarCuotaServlet() {
        // TODO Auto-generated constructor stub
    }

	@Override
	public void realizarAccion(HttpServletRequest req, HttpServletResponse resp) throws Exception {
		
		String cmbprestamos = (String)req.getParameter("cmbPrestamos");
				
		Cliente elCliente = (Cliente)req.getSession().getAttribute("cliente");

		
		int nroprestamo = Integer.parseInt(cmbprestamos);
		
		//int dniCliente = elCliente.getDni();
		double montototal;
		double valorcuota;
		int nroCuotasPagas;
		//int cuotaspagas;
		
		Cuenta cu = new Cuenta();
		Prestamo prestamo = new Prestamo();
		//Prestamos regPrestamo = new Prestamos();
		Movimientos regMovimiento = new Movimientos();
		PagoPrestamo pago = new PagoPrestamo();
		RecursoServicePagoPrestamos cantCuotasPagas = new RecursoServicePagoPrestamosImpl();
		RecursoServiceCuenta serviceCuenta = new RecursoServiceCuentaImpl();
		RecursoServicePrestamos servicePrestamos = new RecursoServicePrestamosImpl();
		RecursoServicePagoPrestamos OrdenPago = new RecursoServicePagoPrestamosImpl();		
		RecursoServiceMovimientos serviceMovimientos = new RecursoServiceMovimientosImpl();

		prestamo = servicePrestamos.listarPrestamosPorCodigo(nroprestamo);

		pago.cargarpago(prestamo.getIdprestamo(),2, prestamo.getDni(),prestamo.getCuenta());
		
		montototal = prestamo.getMonto() + (prestamo.getMonto()*prestamo.getInteres()/100);
		valorcuota = montototal/prestamo.getCantidadcuotas();
			
			///// busca la cuenta y el servicio modifica el saldo y registra el pago
		
			cu = serviceCuenta.buscarCuenta(prestamo.getCuenta()); //busco y traigo la cuenta de la cual se va a debitar el monto
			
			cu.setSaldo(cu.getSaldo()- valorcuota);// modifico el saldo de esa cuenta (saldo de la cuenta - cuota del prestamo)
			serviceCuenta.modificarSaldoCuenta(cu);/// le mando a modificar saldo cuenta la cuenta con el saldo modificado
								
			OrdenPago.registrarPagoPrestamo(pago);
								
			regMovimiento.cargarMovimiento(prestamo.getCuenta(), 1, 4, cu.getSaldo(),valorcuota);
			serviceMovimientos.registrarMovimiento(regMovimiento);
			
			//vuelvo a consultar las cuotas para saber si termino de saldar su deuda
			
			nroCuotasPagas = cantCuotasPagas.obtenerNroCuotasPagas(prestamo.getIdprestamo());

			String jsp = "";
			
			if(nroCuotasPagas == prestamo.getCantidadcuotas())
			{
			
				MessageBean bean = new MessageBean();
				bean.setMensaje("Termino de pagar su prestamo");
				req.setAttribute("msjBean", bean);
				jsp = "menuprestamos.jsp";
				
				req.getSession().setAttribute("cliente", elCliente); // le mando todo lo que le mande la primera vez

				servicePrestamos.cerrarPrestamo(prestamo.getIdprestamo());
			}
			else {
					jsp = "menuprestamos.jsp";
			     }
	
			req.getRequestDispatcher(jsp).forward(req, resp);

	
          
		
		         
	
	}
}

